package com.ls.utils.pay;

import com.thoughtworks.xstream.annotations.XStreamAlias;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * 微信预支付返回值
 *
 * @param
 * @author andyliu
 * @date 5/28/2018 4:23 PM
 * @return
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "xml") //XML文件中的根标识
public class WechatPrepareReturn implements Serializable {

    //基础信息
    @XStreamAlias("return_code")
    private String return_code;
    @XStreamAlias("return_msg")
    private String return_msg;
    //内容信息
    /**
     * MP_APPID
     */
    @XStreamAlias("appid")
    private String appid;
    /**
     * 商户号
     */
    @XStreamAlias("mch_id")
    private String mch_id;

    /**
     * 设备号
     */
    @XStreamAlias("device_info")
    private String device_info;
    /**
     * 随机字符串，长度要求在32位以内。
     */
    @XStreamAlias("nonce_str")
    private String nonce_str;
    /**
     * 签名类型，默认为MD5，支持HMAC-SHA256和MD5。
     */
    @XStreamAlias("sign_type")
    private String sign_type;
    /**
     * 标题标书
     */
    @XStreamAlias("body")
    private String body;
    /**
     * 商品简单描述，该字段请按照规范传递，具体请见参数规定
     */
    @XStreamAlias("detail")
    private String detail;
    /**
     * 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
     */
    @XStreamAlias("attach")
    private String attach;
    /**
     * 符合ISO 4217标准的三位字母代码，默认人民币：CNY，详细列表请参见货币类型
     */
    @XStreamAlias("out_trade_no")
    private String out_trade_no;
    /**
     * 订单总金额，单位为分，详见支付金额
     */
    @XStreamAlias("fee_type")
    private String fee_type;
    /**
     * 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP
     */
    @XStreamAlias("total_fee")
    private Integer total_fee;
    /**
     * 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP
     */
    @XStreamAlias("spbill_create_ip")
    private String spbill_create_ip;
    /**
     * 订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
     */
    @XStreamAlias("time_start")
    private String time_start;
    /**
     * 订单失效时间，格式为yyyyMMddHHmmss，如2009年12月27日9点10分10秒表示为20091227091010。订单失效时间是针对订单号而言的，由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期，所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。其他详见时间规则
     */
    @XStreamAlias("time_expire")
    private String time_expire;
    /**
     * 订单优惠标记，使用代金券或立减优惠功能时需要的参数，说明详见代金券或立减优惠
     */
    @XStreamAlias("goods_tag")
    private String goods_tag;
    /**
     * 小程序取值如下：JSAPI，详细说明见参数规定
     */
    @XStreamAlias("trade_type")
    private String trade_type;
    /**
     * trade_type=NATIVE时，此参数必传。此参数为二维码中包含的商品ID，商户自行定义。
     */
    @XStreamAlias("product_id")
    private String product_id;
    /**
     * 上传此参数no_credit--可限制用户不能使用信用卡支付
     */
    @XStreamAlias("limit_pay")
    private String limit_pay;
    /**
     * 登录时的开放id
     */
    @XStreamAlias("openid")
    private String openid;
    /**
     * Y，传入Y时，支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能，传此字段才可生效
     */
    @XStreamAlias("receipt")
    private String receipt;
    /**
     * 该字段常用于线下活动时的场景信息上报，支持上报实际门店信息，商户也可以按需求自己上报相关信息。该字段为JSON对象数据，对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} ，字段详细说明请点击行前的+展开
     */
    @XStreamAlias("scene_info")
    private String scene_info;
    /**
     * 符合ISO 4217标准的三位字母代码，默认人民币：CNY，详细列表请参见货币类型
     */
    @XStreamAlias("notify_url")
    private String notify_url;
    /**
     * 包值，是固定的值
     */
    @XStreamAlias("packageValue")
    private String packageValue = "Sign=WXPay";

    @XStreamAlias("sign")
    private String sign;
    /**
     * 预览的id需要返回给前端使用
     */
    @XStreamAlias("prepay_id")
    private String prepay_id;
    /**
     * 校验成功时的相应结果
     */
    @XStreamAlias("result_code")
    private String result_code;
    /**
     * 校验成功时的相应结果
     */
    @XStreamAlias("err_code_des")
    private String err_code_des;
    /**
     * 发送的完成xml格式
     */
    @XStreamAlias("requestXml")
    private String requestXml;
    /**
     * 发送的完成xml格式
     */
    @XStreamAlias("returnXml")
    private String returnXml;
    /**
     * QQ发起H5支付时的web支付地址
     */
    @XStreamAlias("mweb_url")
    private String mweb_url;

}
